Hệ thống đăng ký của UniLearn và LMS không chứa cùng các mã sinh viên. Nhóm cần một số báo cáo, mỗi báo cáo có câu trả lời khác nhau cho câu hỏi “Những hàng nguồn nào phải xuất hiện?”
Tái sử dụng cơ sở dữ liệu của Lab 6
Nếu bạn đã chạy lab6_7_setup.sql trong Lab 6, hãy giữ nguyên dữ liệu đó. Nếu chưa, hãy mở tệp cài đặt dùng chung do giảng viên cung cấp trong pgAdmin và chạy một lần. Chọn lab6_7 trong mỗi kết nối Query Tool mới.
Bắt đầu với phép Join bạn đã biết
- Kiểm tra
studentsvàlms_roster: 22 mã đăng ký và 6 mã LMS. - Chạy INNER JOIN theo quy tắc khớp của Lab 6.
- Xác định bốn mã có trong cả hai nguồn.
- Giải thích vì sao kết quả này không thể là danh sách đầy đủ từ bất kỳ nguồn nào.
Năm yêu cầu báo cáo
Liệt kê các tài khoản dùng chung; giữ mọi sinh viên trong hệ thống đăng ký; giữ mọi tài khoản LMS; đối chiếu cả hai nguồn; tạo các lựa chọn sinh viên–môn học. Bạn sẽ viết các truy vấn INNER, LEFT, RIGHT, FULL và CROSS JOIN cho những yêu cầu này.
SET search_path TO lab6_7;
SELECT s.student_id AS registry_id, s.student_name,
r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
ON s.student_id = r.student_id
ORDER BY s.student_id;Kiểm tra các mã đã khớp
Bốn hàng: S101, S102, S105 và S121. Mỗi mã là duy nhất trong cả hai bảng, nên mỗi cặp khớp xuất hiện một lần. Báo cáo này chỉ chứa các tài khoản dùng chung.
Uma (S121) có tài khoản LMS dù không có đăng ký môn học nào. Việc khớp tài khoản không chứng minh có tham gia môn học.
Kiểm tra cả hai nguồn
Danh sách LMS là dữ liệu nhập chưa được xác thực. Nó cố ý không có khóa ngoại liên kết tới students, nên S901 và S902 chỉ có thể tồn tại trong nguồn đó.
SET search_path TO lab6_7;
SELECT student_id, student_name
FROM students
ORDER BY student_id;
SELECT student_id, lms_name
FROM lms_roster
ORDER BY student_id;| Mã LMS | Tên LMS | Có trong hệ thống đăng ký? |
|---|---|---|
| S101 | Alice Wong | Có |
| S102 | Ben Lau | Có |
| S105 | Emma Li | Có |
| S121 | Uma Shah | Có |
| S901 | Khách được nhập A | Không |
| S902 | Khách được nhập B | Không |
Tệp cài đặt dùng chung cũng chứa 8 môn học, 37 lượt đăng ký, 8 bài tập và 30 bài nộp cho các nhiệm vụ sau. Tất cả bản ghi đều là hư cấu.
Đọc yêu cầu trước khi chọn phép Join
| Yêu cầu | Kết quả cần có |
|---|---|
| Tài khoản dùng chung | Chỉ các cặp mã khớp nhau. |
| Phạm vi hệ thống đăng ký | Mọi sinh viên trong hệ thống đăng ký, kể cả không có tài khoản LMS. |
| Kiểm toán nhập liệu LMS | Mọi tài khoản LMS được nhập, kể cả không khớp với hệ thống đăng ký. |
| Đối chiếu cả hai hệ thống | Các tài khoản dùng chung và bản ghi chỉ có trong một nguồn. |
| Lập kế hoạch môn học | Mọi sinh viên được chọn ghép với mọi môn học được chọn. |
Lab 6 đã xác lập cách các cặp khớp tạo thành hàng. Trong lab này, hãy thay đổi loại join để kiểm soát các hàng không khớp hoặc tạo mọi tổ hợp, rồi kiểm tra xem mỗi hàng kết quả đại diện cho điều gì.